from django.shortcuts import render, HttpResponse

# Create your views here.
from student.models import *
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

"""def index(request):

    '''
    批量导入数据:

    Booklist=[]
    for i in range(100):
        Booklist.append(Book(title="book"+str(i),price=30+i*i))
    Book.objects.bulk_create(Booklist)
    '''

    '''
分页器的使用:

    book_list=Book.objects.all()

    paginator = Paginator(book_list, 10)

    print("count:",paginator.count)           #数据总数
    print("num_pages",paginator.num_pages)    #总页数
    print("page_range",paginator.page_range)  #页码的列表



    page1=paginator.page(1) #第1页的page对象
    for i in page1:         #遍历第1页的所有数据对象
        print(i)

    print(page1.object_list) #第1页的所有数据


    page2=paginator.page(2)

    print(page2.has_next())            #是否有下一页
    print(page2.next_page_number())    #下一页的页码
    print(page2.has_previous())        #是否有上一页
    print(page2.previous_page_number()) #上一页的页码



    # 抛错
    #page=paginator.page(12)   # error:EmptyPage

    #page=paginator.page("z")   # error:PageNotAnInteger

    '''


    book_list=Book.objects.all()

    paginator = Paginator(book_list, 3)
    page = request.GET.get('page', 1)
    currentPage = int(page)


    try:
        print(page)
        book_list = paginator.page(page)
    except PageNotAnInteger:
        book_list = paginator.page(1)
    except EmptyPage:
        book_list = paginator.page(paginator.num_pages)


    return render(request,"page_demo/index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})

"""


def index(request):
    print(request.get_full_path())

    book_list = Book.objects.all()

    # 获取分页器对象
    paginator = Paginator(book_list, 2)

    # 获取前端返回选中页码,如果没有则page_number为默认值1,get获取的值为字符串
    page = request.GET.get('page', 1)
    currentPage = int(page)

    #  如果页数十分多时，换另外一种显示方式
    # 构建page_range
    max_page_count = 11
    max_page_count_half = int(max_page_count / 2)
    # 判断页数是否大于max_page_count
    if paginator.num_pages >= max_page_count:
        # 得出start位置
        if currentPage <= max_page_count_half:
            page_start = 1
            page_end = max_page_count + 1
        else:
            if currentPage + max_page_count_half + 1 > paginator.num_pages:
                page_start = paginator.num_pages - max_page_count
                page_end = paginator.num_pages + 1
            else:
                page_start = currentPage - max_page_count_half
                page_end = currentPage + max_page_count_half + 1
        page_range = range(page_start, page_end)
    else:
        page_range = paginator.page_range


    try:
        print(page)
        book_list = paginator.page(page)
    except PageNotAnInteger:
        book_list = paginator.page(1)
    except EmptyPage:
        book_list = paginator.page(paginator.num_pages)


    return render(request, "page_demo/index.html", locals())